<template>
  <div>
    <!--infinite-scroll-disabled="busy"表示由变量busy决定是否执行loadMore，false则执行loadMore-->
    <!--infinite-scroll-distance="10"这里10决定了页面滚动到离页尾多少像素的时候触发回调函数，10是像素值。通常我们会在页尾做一个几十像素高的“正在加载中...”，这样的话，可以把这个div的高度设为infinite-scroll-distance的值即可。-->
    <!--infinite-scroll-immediate-check 默认值为true，该指令意思是，应该在绑定后立即检查busy的值和是否滚动到底。如果你的初始内容高度不够高、不足以填满可滚动的容器的话，你应设为true，这样会立即执行一次loadMore，会帮你填充一些初始内容。-->
    <!--infinite-scroll-listen-for-event 当事件在Vue实例中发出时，无限滚动将再次检查。-->
    <!--infinite-scroll-throttle-delay 检查busy的值的时间间隔，默认值是200，因为vue-infinite-scroll的基础原理就是，vue-infinite-scroll会循环检查busy的值，以及是否滚动到底，只有当：busy为false且滚动到底，回调函数才会执行。-->
    <div class="infinite-list" v-infinite-scroll="loadMore" :infinite-scroll-disabled="busy" infinite-scroll-distance="20" style="overflow:hidden">
      <div class="infinite-list-item" v-for="item in data" :key="item.index">{{item.name}}</div>
    </div>
  </div>
</template>

<script>
export default {
  data () {
    return {
      count: 0,
      data: [],
      busy: false
    }
  },
  created () {
  },
  // DOM对象加载完成时
  mounted () {},
  methods: {
    loadMore () {
      this.busy = true
      setTimeout(() => {
        for (var i = 0, j = 5; i < j; i++) {
          this.data.push({ name: this.count++ })
        }
        console.log(this.data)
        this.busy = false
      }, 1000)
    }
  },
  computed: {},
  name: 'AvatarFrame',
  components: {}
}
</script>

<style lang='less' scoped>
.infinite-list {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
}
.infinite-list-item {
  margin: 15px;
  list-style: none;
  width: 180px;
  height: 180px;
  border: 1px solid black;
  border-radius: 20px;
}
</style>
